「GitHub Actions を活用して GitHub Packages に公開する」オンライントレーニングを受講してみた
本記事では、Microsoft Learn が提供する無料オンライントレーニング「GitHub Actions を活用して GitHub Packages に公開する」の内容を紹介します。
Microsoft Learn とは
Microsoft Learn は、Microsoft が提供する無料のオンライン学習プラットフォームです。個人や組織向けに、クラウド、AI、開発ツールなど幅広い技術トピックについて、実践的なトレーニングコンテンツを提供しています。
今回は、過去に GitHub Actions 初級トレーニングを 2 つ受講済みなので中級編をやってみました。
トレーニングの概要
- URL: GitHub Actions を活用して GitHub Packages に公開する - Training | Microsoft Learn
- 所要時間: 約 1.5 時間
- 難易度: 中級
- 前提知識: GitHub アカウントの所持、基本的な GitHub Actions の知識
学習内容
本トレーニングは以下の 2 つのパートで構成されています。
- 座学パート:
- GitHub Packages の基礎知識
- GitHub Container Registry の使用方法
- 実技パート:
- ワークフロー作成
- Docker イメージのビルド
- GitHub Container Registry にコンテナイメージを登録と公開
- ワークフロー作成
座学パート
座学パートでは、GitHub Packages の基礎知識を学習します。GitHub Actions ワークフローを使用して Docker イメージをビルドし、GitHub Container Registry (GHCR) にプッシュする方法の解説があります。
この部分は簡潔にまとめられており、トレーニングの重点は次の実技パートに置かれていました。
実技パート
実技パートでは、以下の 2 つの主要タスクに取り組みます。
- Docker イメージをビルドし、GHCR に登録するための GitHub Actions ワークフローの作成
- GHCR からイメージをプルし、ローカル環境でコンテナの動作確認
以下は作成したワークフローの詳細です。
permissions:
セクションで必要な権限を設定- GitHub Packages への書き込み権限(Docker イメージの登録用)
- コンテンツの読み取り権限(ソースコードの取得用)
${{ secrets.GITHUB_TOKEN }}
は GitHub Actions が自動的に提供するトークンpermissions:
で指定した権限が付与される
- Docker イメージのビルドと GHCR へのプッシュ
docker/metadata-action
を使用した Docker イメージへのタグ付け
name: Publish to Docker
on:
push:
branches:
- main
permissions:
packages: write
contents: read
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# Add your test steps here if needed...
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/bigmuramura/publish-packages/game
tags: type=sha
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build container
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
main ブランチにプッシュ後、ワークフローが実行されるとパッケージとして、Docker イメージが公開されました。イメージタグはハッシュ値が設定されています。
プルしてローカルでコンテナを起動しました。
$ docker run -dp 8080:80 --rm ghcr.io/bigmuramura/publish-packages/game:sha-5a2a3fd
Web ブラウザからアクセスすると三目並べができました。
以上でトレーニングは終了です。
まとめ
GitHub Actions と GitHub Packages を組み合わせたワークフローの構築方法を学びました。特に、Docker イメージのビルドから GitHub Container Registry への公開までの一連のプロセスを自動化する方法を習得しました。
おわりに
このトレーニングを通じて、GitHub Container Registry (GHCR) の存在を知りました。GHCR は GitHub Packages の機能の 1 つとして提供されているコンテナレジストリということを知りました。
これまではプライベートのイメージの保存先となると Amazon ECR か、Docker Hub に保存することが多く、それ以外のコンテナレジストリの知識が不足していることを認識できました。
参考までに、GHCR の料金体系に関する情報を以下に記載します。
コンテナイメージに付与するタグやラベルはdocker/metadata-action
を使うと便利で良いですね。